
public class FacesUtils2 {
//	protected static final String RESOURCE_BUNDLE = "resources.messages";
//	public static final String ERROR_PAGE = "/error/Error.jsf";
//	public static final String ERROR_HTML_PAGE = "/error/Error.html";
//	public static final String ERROR_VIEW_ID = "/error/Error.xhtml";
//	public static final String MAIN_PAGE = "/Main.jsf";
//	public static final String LOGOUT_PAGE = "/Logout.jsf";
//	public static final String LOGIN_PAGE = "/Login.jsf";
//	public static final String RELEASE_LOCK_PAGE_PATH = "/includes/PageLock.jsf";
//	public static final String CANCEL_VIEW_ID = "/includes/Cancel.xhtml";
//
//	private Locale locale;
//
//	public static FacesContext getFacesContext() {
//		return FacesContext.getCurrentInstance();
//	}
//
//	public static String getContextPath() {
//		HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
//		return request.getContextPath();
//	}
//
//	public static Map<String, Object> getSessionMap() {
//		return FacesContext.getCurrentInstance().getExternalContext().getSessionMap();
//	}
//
//	public static HttpSession getHttpSession() {
//		return (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false);
//	}
//
//	public static String getClientBrowserAgent() {
//		return ((HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest()).getHeader("User-Agent");
//	}
//
//	public static void invalidateSession() {
//
//		if (getUserSession().getUserInfo() != null)
//			Logger.info(FacesUtils.class, "Invalidate http session for customer number:"
//					+ getUserSession().getCustomerNumber());
//
//		removeActiveSession();
//
//		if (getHttpSession() != null)
//			getHttpSession().invalidate();
//
//	}
//
//	private static void removeActiveSession() {
//		if (getUserSession().getUser() != null) {
//			boolean hasSession = ActiveSessionList.getInstance().isSessionExists(
//					getUserSession().getActiveSessionIndex(), getUserSession().getUser().getId(),
//					getHttpSession().getId());
//			if (hasSession) {
//				ActiveSessionList.getInstance().removeSessionForIndex(getUserSession().getActiveSessionIndex());
//			}
//		}
//	}
//
//	public static boolean sessionMapContains(String key) {
//		return getSessionMap().containsKey(key);
//	}
//
//	public static void sessionMapPut(String key, Object value) {
//		getSessionMap().put(key, value);
//	}
//
//	public static Object sessionMapGet(String key) {
//		return getSessionMap().get(key);
//	}
//
//	public static void sessionMapRemove(String key) {
//		getSessionMap().remove(key);
//	}
//
//	public static Object sessionMapGetAndRemove(String key) {
//		Object value;
//		value = sessionMapGet(key);
//		sessionMapRemove(key);
//		return value;
//	}
//
//	public static String getRequestParameter(String key) {
//		return FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get(key);
//	}
//
//	public static boolean containsRequestParameter(String key) {
//		return FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().containsKey(key);
//	}
//
//	public static UserSessionBean getUserSession() {
//		UserSessionBean userSession = (UserSessionBean) getManagedSessionBean("UserSession");
//		return userSession;
//	}
//
//	public static ApplicationBean getApplication() {
//		ApplicationBean application = (ApplicationBean) getManagedSessionBean("Application");
//		return application;
//	}
//
//	public static NavigationBean getNavigation() {
//		NavigationBean navigation = (NavigationBean) getManagedSessionBean("Navigation");
//		return navigation;
//	}
//
//	public static Object getManagedSessionBean(String beanName) {
//		ELResolver resolver = getFacesContext().getApplication().getELResolver();
//		return resolver.getValue(getFacesContext().getELContext(), null, beanName);
//	}
//
//	public static void setManagedBean(String beanName, Object value) {
//		ELResolver resolver = getFacesContext().getApplication().getELResolver();
//		resolver.setValue(getFacesContext().getELContext(), null, beanName, value);
//	}
//
//	public static void addNotification(Notification notification) {
//		if (notification.getType().equals(NotificationType.ERROR)) {
//			addError(notification.getMessageCode(), notification.getParameters(), notification.isShowMessage());
//		}
//		if (notification.getType().equals(NotificationType.WARNING)) {
//			addWarning(notification.getMessageCode(), notification.getParameters(), notification.isShowMessage());
//		}
//		if (notification.getType().equals(NotificationType.INFO)) {
//			addInfo(notification.getMessageCode(), notification.getParameters(), notification.isShowMessage());
//		}
//	}
//
//	public static void addError(String messageKey, Object[] parameters) {
//		addError(messageKey, parameters, true);
//	}
//
//	public static void addError(String messageKey, Object[] parameters, boolean showMessage) {
//		String message = getResourceBundleString(RESOURCE_BUNDLE, messageKey, parameters);
//		if (messageKey.startsWith("ERROR.HOST") && message.equals(messageKey)) {
//			message = getResourceBundleString(RESOURCE_BUNDLE, "JADK.SQLEXCEPTION", parameters);
//		}
//		getFacesContext().addMessage(null,
//				new EposFacesMessage(FacesMessage.SEVERITY_ERROR, message, message, showMessage));
//	}
//
//	public static void addInfo(String messageKey, Object[] parameters) {
//		addInfo(messageKey, parameters, true);
//	}
//
//	public static void addInfo(String messageKey, Object[] parameters, boolean showMessage) {
//		String message = getResourceBundleString(RESOURCE_BUNDLE, messageKey, parameters);
//		getFacesContext().addMessage(null,
//				new EposFacesMessage(FacesMessage.SEVERITY_INFO, message, message, showMessage));
//	}
//
//	public static void addWarning(String messageKey, Object[] parameters) {
//		addWarning(messageKey, parameters, true);
//	}
//
//	public static void addWarning(String messageKey, Object[] parameters, boolean showMessage) {
//		String message = getResourceBundleString(RESOURCE_BUNDLE, messageKey, parameters);
//		getFacesContext().addMessage(null,
//				new EposFacesMessage(FacesMessage.SEVERITY_WARN, message, message, showMessage));
//	}
//
//	public static String getResourceBundleString(String moduleBundleName, String key, Object[] parameters) {
//		return getResourceBundleString(moduleBundleName, key, parameters, null);
//	}
//
//	public static String getResourceBundleString(String moduleBundleName, String key, Object[] parameters, Locale locale) {
//		String value = null;
//
//		Locale localLocale = null;
//		if (locale == null)
//			localLocale = getLocale();
//		else
//			localLocale = locale;
//		if (locale == null) {
//			if (getLocale() != null)
//				localLocale = getLocale();
//		}
//		ResourceBundle bundle = ResourceBundle.getBundle(moduleBundleName, localLocale);
//		if (bundle == null)
//			return key;
//		try {
//			value = bundle.getString(key);
//		} catch (MissingResourceException e) {
//			value = key;
//		}
//		if (value == null)
//			return StringUtils.EMPTY;
//		if (parameters != null)
//			value = MessageFormat.format(value, parameters);
//		return value;
//	}
//
//	public static String getResourceBundleString(ResourceBundle bundle, String key, Object[] parameters) {
//		if (bundle == null)
//			return key;
//		String value = null;
//		try {
//			value = bundle.getString(key);
//		} catch (MissingResourceException e) {
//			value = key;
//		}
//		if (value == null)
//			return StringUtils.EMPTY;
//		if (parameters != null)
//			value = MessageFormat.format(value, parameters);
//		return value;
//	}
//
//	public static void setParameter(String key, Object value) {
//		Map<String, Object> map = getFacesContext().getExternalContext().getSessionMap();
//		map.put(key, value);
//
//	}
//
//	public static Object getParameter(String key) {
//		Map<String, Object> map = getFacesContext().getExternalContext().getSessionMap();
//		if (map.containsKey(key)) {
//			Object value = map.get(key);
//			return value;
//		}
//		return null;
//	}
//
//	public static String getPagePath() {
//		FacesContext context = FacesContext.getCurrentInstance();
//		HttpServletRequest request = (HttpServletRequest) context.getExternalContext().getRequest();
//		return request.getServletPath();
//	}
//
//	public static String getViewId() {
//		if (FacesContext.getCurrentInstance() != null && FacesContext.getCurrentInstance().getViewRoot() != null)
//			return FacesContext.getCurrentInstance().getViewRoot().getViewId();
//		else
//			return "";
//	}
//
//	public static void redirect(String path) {
//		redirect(getContextPath(), path);
//	}
//
//	public static void redirect(String contextPath, String path) {
//		FacesContext context = FacesContext.getCurrentInstance();
//		HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();
//		try {
//			response.sendRedirect(contextPath + path);
//			context.responseComplete();
//		} catch (IOException e) {
//			Logger.error(FacesUtils.class, "Error redirecitng to " + path, e);
//		}
//	}
//
//	public static void redirectToReleaseLockPage() {
//		redirect(RELEASE_LOCK_PAGE_PATH);
//	}
//
//	public static void redirectToErrorPage() {
//		redirect(ERROR_PAGE);
//	}
//
//	public static void redirectToHtmlErrorPage() {
//		redirect(ERROR_HTML_PAGE);
//	}
//
//	public static void redirectToLogoutPage() {
//		redirect(LOGOUT_PAGE);
//	}
//
//	public static void redirectToMainPage() {
//		redirect(MAIN_PAGE);
//	}
//
//	public static void redirectToLoginPage() {
//		redirect(LOGIN_PAGE);
//	}
//
//	public static void redirectNavigationCase(String outcome) {
//		EposNavigationHandler handler = (EposNavigationHandler) FacesUtils.getFacesContext().getApplication().getNavigationHandler();
//		NavigationCase navCase = handler.getNavigationCase(FacesUtils.getFacesContext(), null, outcome);
//		if (navCase == null)
//			return;
//		redirect(navCase.getToViewId(FacesUtils.getFacesContext()));
//	}
//
//	public static HttpServletResponse getServletResponse() {
//		return (HttpServletResponse) getExternalContext().getResponse();
//	}
//
//	public static HttpServletRequest getServletRequest() {
//		return (HttpServletRequest) getExternalContext().getRequest();
//	}
//
//	public static ExternalContext getExternalContext() {
//		return getFacesContext().getExternalContext();
//	}
//
//	public static void checkPageLock() {
//		boolean engagePageLock = getUserSession().checkPageLock();
//		if (engagePageLock) {
//			throw new PageLockException();
//		}
//	}
//
//	public static Locale getLocale() {
//		return getFacesContext().getViewRoot().getLocale();
//	}
//
//	public void setLocale(Locale locale) {
//		this.locale = locale;
//	}
//
//	public static Flash getFlash() {
//		return getFacesContext().getExternalContext().getFlash();
//	}
//
//	public static Object flashGet(String parameter) {
//		return getFlash().get(parameter);
//	}
//
//	public static void flashPutNow(String parameter, Object value) {
//		getFlash().putNow(parameter, value);
//	}
//
//	public static void flashPut(String parameter, Object value) {
//		getFlash().put(parameter, value);
//	}
//
//	public static void flashRemove(String parameter) {
//		getFlash().remove(parameter);
//	}
//
//	public static boolean putFlashBeanToThis(Object toThis) {
//		ManagedBean managedBean = toThis.getClass().getAnnotation(ManagedBean.class);
//		String beanName = managedBean.name();
//		Object flashObject = getFlash().get(beanName);
//		if (flashObject != null) {
//			try {
//				BeanUtils.copyProperties(toThis, flashObject);
//				return true;
//			} catch (IllegalAccessException e) {
//				e.printStackTrace();
//			} catch (InvocationTargetException e) {
//				e.printStackTrace();
//			}
//			return false;
//		}
//		return false;
//	}
//
//	public static void putThisToFlashBean(Object toThis) {
//		ManagedBean managedBean = toThis.getClass().getAnnotation(ManagedBean.class);
//		String beanName = managedBean.name();
//		getFlash().put(beanName, toThis);
//	}O
//
//	public static Object getViewMap(String beanName) {
//		Object object = FacesContext.getCurrentInstance().getViewRoot().getViewMap().get(beanName);
//		return object;
//	}
//
//	public static void setViewMap(String beanName, Object value) {
//		FacesContext.getCurrentInstance().getViewRoot().getViewMap().put(beanName, value);
//	}
//
}
